#include <iostream>
#include <string>
#include <vector>
using namespace std;

int My_reset(
    string &My_string, char c,
    int &
        val) //函数的声明及定义，接受三个参数，以传址的方式传入两个需要改变的参数(引用)，无需改变的目标字符传值即可。
{
  int First_position = My_string.size();
  for (int i = 0; i < My_string.size(); i++) {
    if (My_string[i] == c) {
      if (First_position == My_string.size()) {
        First_position = i;
      }
      val++; //修改并隐式的返回其出现次数
    }
  }
  return First_position; //返回目标字符出现的首位置
}
int main() {
  cout << "请输入目标字符串:";
  string string_1;
  cin >> string_1;
  cout << "请输入目标字符以确定字符出现首位置以及次数：";
  char My_char;
  cin >> My_char;
  int val = 0; //此处需要将次数初始化后使用
  int number = My_reset(string_1, My_char, val);
  if (val == string_1.size()) {
    cout << "目标字符串中无" << My_char << "字符出现" << endl;
  }
  cout << "字母i第一次出现的位置为：" << number + 1
       << endl; //加一因为数组从零开始，但是我们自然计数从第一个位置开始。
  cout << "字母i出现的次数为：" << val << endl;
}

string My_reset(
    string &
        My_string) //函数的声明及定义，My_string需在函数中修改，所以不能使用常量引用。
{
  for (int i = 0; i < My_string.size(); i++) {
    if (My_string[i] >= 'A' && My_string[i] <= 'Z') {
      My_string[i] =
          My_string[i] +
          32; //大写字母小写字母的ASCII码:a-z:97-122 A-Z:65-90 0-9:48-57
    }
  }
  return My_string; //返回修改后的字符串
}